mod method;

fn main() {
    // 无参无返回值
    hello();
    // 没有参数，有返回值
    println!("get_name:{}", get_name());
    println!("get_name2:{}", get_name2());

    // 参数-值传递(可理解为拷贝)
    let mut price = 99;
    double_price(price);
    println!("外部的 price 是: {}", price);

    // 参数-引用传递
    let mut price2 = 99;
    double_price2(&mut price2);
    println!("外部的 price2 是: {}", price2)
}

// 参数-引用传递
fn double_price2(price2: &mut i32) {
    *price2 = *price2 * 2;
    println!("内部的 price2 是: {}", price2);
}

// 参数-值传递
fn double_price(mut price: i32) {
    price = price * 2;
    println!("内部的 price 是: {}", price);
}

fn get_name() -> String {
    return String::from("Rust 权威指南");
}

fn get_name2() -> String {
    String::from("Rust 入门教程")
}

fn hello() {
    println!("Hello,World!")
}